﻿<?php
	ini_set('display_errors', true);
	error_reporting(E_ALL);
	
	
		
	// variabler som må av en eller annen grunn være utenfor klassen 	
	$connect = 0;
	
	/*******************************************************************/
	
	// Funksjoner som av en eller annen grunn som må være utenfor klassen
	function kobleTil() {
		$connect = mysql_connect("localhost", "root", "123");
		if (!$connect)
			die('Kunne ikke koble til databasen: ' . mysql_error());
		if (!mysql_select_db("hisfipam", $connect))		
			die('Kunne ikke koble til databasen: ' . mysql_error());
		return $connect;
	}
	
	function kobleFra($con) {
		mysql_close($con);
	}
	
	function sjekkIP($ip) {
	// Sjekker om det er en ekte ip adresse
		if (filter_var($ip, FILTER_VALIDATE_IP))
			return true;
		else 
			return false;
	}
	// Deler opp adressen og returnerer en array med adressen delt opp
	function delOppIP($ip) {
		$nyIP = array();
		$nyIP = explode(".", $ip);
		return $nyIP;
	}
	
	// denne kode blokka skal nok flyttes senere
	
	
	
	/*******************************************************************/
	
	function alertDebug($tekst) {
		echo "<script type='text/javascript'> alert('" . $tekst . "'); </script>";
	}
	
	class Database {
		private $dbNavn = "hisfipam";
		private $dbBruker = "root";
		private $dbPassord = "123";
		private $dbHost = "localhost";
		private $debug = 0;
		//private $connect;
		//private $valgtDatabase ="hisfipam";
		
		//private __construct() { alertDebug("lager database class"); }
		//private __destruct() {}
				
		// Returnerer en array med alle vlan på måten $vlan[id] [vlan nr]/[vlan beskrivelse]
		public function hentVlan() {
			$con = kobleTil();
			$vlan = array();
			$sql = "SELECT * FROM vlan";
			$resultat = mysql_query($sql);
			if (!$resultat) 
				die('Noe gikk feil da data skulle hentes ut ' . mysql_error());
			else {
				$counter = 0;
				while($rad = mysql_fetch_array($resultat)) {
					$vlan[$counter]['id'] = $rad['id'];
					$vlan[$counter]['beskrivelse'] = $rad['beskrivelse'];
					$counter++;
				}
			}
			kobleFra($con);
			return $vlan;
		}
		
		public function hentLedigeAdresser($vlan) {
			$con = kobleTil();
			$sql = "SELECT * FROM `ipserie` WHERE vlan='$vlan' && beskrivelse='' && dns_oppforing='' && plassering='' && type='' && diverse=''";
			$resultat = mysql_query($sql);
			
			if (!$resultat) 
				die('Noe gikk feil da data skulle hentes ut ' . mysql_error());
			
			//$antall['vlan'] = $vlan;
			//$antall['ant'] = mysql_num_rows($resultat);
			kobleFra($con);
			
			return mysql_num_rows($resultat);
		}
		
		public function hentSubnett() {
			$con = kobleTil();
			$subn = array();
			$sql = "SELECT * FROM subnett";
			$resultat = mysql_query($sql);
			if (!$resultat) 
				die('Noe gikk feil da data skulle hentes ut ' . mysql_error());
			else {
				$counter = 0;
				while($rad = mysql_fetch_array($resultat)) {
					$subn[$counter]['navn'] = $rad['navn'];
					$subn[$counter]['sted'] = $rad['sted'];
					$subn[$counter]['vlan'] = $rad['vlan'];
					$subn[$counter]['ant_adr'] = $rad['ant_adr'];
					$subn[$counter]['subnett_cidr'] = $rad['subnett_cidr'];
					$subn[$counter]['gateway'] = $rad['gateway'];
					$subn[$counter]['maske'] = $rad['maske'];
					$subn[$counter]['dhcp'] = $rad['dhcp'];
					$subn[$counter]['acl_ut'] = $rad['acl_ut'];
					$subn[$counter]['acl_inn'] = $rad['acl_inn'];
					$subn[$counter]['diverse'] = $rad['diverse'];
					$counter++;
				}
			}
			kobleFra($con);
			return $subn;
		}
		// Henter alle adressene på et valgt vlan
		public function hentIpAdresserVlan($vlan) {
			$con = kobleTil();
			$ipAdresser = array();
			$sql = "SELECT * FROM ipserie WHERE vlan='$vlan'";
			$resultat = mysql_query($sql);
			
			// sql søk ok, men fant ingen rader
			if(mysql_num_rows($resultat) == 0)
				return false;
			
			// sql søk ikke ok, feil syntax?
			if (!$resultat) 
				die('Noe gikk feil da data skulle hentes ut ' . mysql_error());
			else {
				$counter = 0;
				while ($rad = mysql_fetch_array($resultat)) {
					$ipAdresser[$counter]['id'] = $rad['id'];
					$ipAdresser[$counter]['adresse'] = $rad['adresse'];
					$ipAdresser[$counter]['adresse'] = long2ip($rad['adresse']);
					$ipAdresser[$counter]['vlan'] = $rad['vlan'];
					$ipAdresser[$counter]['beskrivelse'] = $rad['beskrivelse'];
					$ipAdresser[$counter]['subnett'] = $rad['subnett'];
					$ipAdresser[$counter]['gateway'] = long2ip($rad['gateway']);
					$ipAdresser[$counter]['dns_oppføring'] = $rad['dns_oppforing'];
					$ipAdresser[$counter]['plassering'] = $rad['plassering'];
					$ipAdresser[$counter]['type'] = $rad['type'];
					$ipAdresser[$counter]['diverse'] = $rad['diverse'];
					$counter++;
				}
				kobleFra($con);
			}
			return $ipAdresser;
		}
		// Henter kun ut adresser som matcher et søk
		public function hentIpAdresserSok($sokeIP) {
			$con = kobleTil();
			$ipAdresser = array();
			
			$ipMin = "158.37.0.0";
			$ipMax = "158.37.255.255";
			
			//$sokeIP = ip2long($sokeIP);
			/*
			* ip adresse søk tar disse feltene i databasen
			* adresse
			* gateway
			*/
			
			//$sql = "SELECT * FROM ipserie WHERE (adresse='$sokeIP' BETWEEN $ipMin AND $ipMax) OR (gateway='$sokeIP' BETWEEN $ipMin AND $ipMax) ";
			//$sql = "SELECT * FROM ipserie WHERE adresse='{$sokeIP}' OR gateway='{$sokeIP}' ";
			//$sql = "SELECT * FROM ipserie WHERE adresse=%" . $sokeIP ."% OR gateway=%" . $sokeIP . "%";
			//$sql = "SELECT * FROM ipserie WHERE adresse=INET_ATON('$sokeIP%') OR gateway=INET_ATON('$sokeIP%') ";
			
			// Henter bare adresser som er helt likt med den det søkes etter
			//$sql = "SELECT * FROM ipserie WHERE adresse=INET_ATON('$sokeIP') OR gateway=INET_ATON('$sokeIP%') ";
			
			$sql = "SELECT * 
					FROM ipserie 
					WHERE adresse=(INET_ATON('$sokeIP') 
					OR gateway=INET_ATON('$sokeIP%') ";
			
			
			echo $sql . "<br />";
			
			$resultat = mysql_query($sql);
			
			// sql søk ok, men fant ingen rader
			//if(mysql_num_rows($resultat) == 0)
				//return false;
			
			// sql søk ikke ok, feil syntax?
			if (!$resultat) 
				die('Noe gikk feil da data skulle hentes ut ' . mysql_error());
			else {
				$counter = 0;
				while ($rad = mysql_fetch_array($resultat)) {
					$ipAdresser[$counter]['id'] = $rad['id'];
					$ipAdresser[$counter]['adresse'] = long2ip($rad['adresse']);
					$ipAdresser[$counter]['vlan'] = $rad['vlan'];
					$ipAdresser[$counter]['beskrivelse'] = $rad['beskrivelse'];
					$ipAdresser[$counter]['subnett'] = $rad['subnett'];
					$ipAdresser[$counter]['gateway'] = long2ip($rad['gateway']);
					$ipAdresser[$counter]['dns_oppføring'] = $rad['dns_oppforing'];
					$ipAdresser[$counter]['plassering'] = $rad['plassering'];
					$ipAdresser[$counter]['type'] = $rad['type'];
					$ipAdresser[$counter]['diverse'] = $rad['diverse'];
					$counter++;
				}
			}
			return $ipAdresser;
			kobleFra($con);
		}
		
		public function lagreIpAdresse($info) {
			$con = kobleTil();
			//$info['adresse'] = ip2long($info['adresse']);
			$sql = "UPDATE ipserie SET adresse=INET_ATON('{$info['adresse']}'), vlan='{$info['vlan']}', beskrivelse='{$info['beskrivelse']}', subnett='{$info['subnett']}', gateway='{$info['gateway']}', dns_oppforing='{$info['dns_oppforing']}', plassering='{$info['plassering']}', type='{$info['type']}', diverse='{$info['diverse']}' WHERE id='{$info['id']}'";
			$sql = strip_tags($sql);
			//echo $sql . "                                    ";
			
			
			$db_selected = mysql_select_db("hisfipam", $con);
			if (!$db_selected)
				die("Feil med valg av database tabell i lagreIpAdress(): " . mysql_error());
			
			$query = mysql_query($sql);
			
			if (!$query) 
				die('Noe gikk feil da data skulle lagres i databasen i lagreIpAdresse() ' . mysql_error());
			
			kobleFra($con);
			return true;
		}
		
		/*
		public function hentIpAdresse($ip) {
			if(sjekkIP($ip)) {
				$deltIP = array();
				$deltIP = delOppIP($ip);
			}
			else 
				return false;
		}
		*/
	}
?>